package CrowdCountingMVC.CCModel;

import Const.State;
import CrowdCountingMVC.CCModel.Task.PythonScriptTask.PythonRunTask;
import CrowdCountingMVC.CCView.CCObserver.CrowdShowObserver;
import CrowdCountingMVC.CCView.CCObserver.PersonNumShowObserver;
import CrowdCountingMVC.CCView.CCObserver.WarningShowObserver;

import java.io.File;
import java.util.List;

public interface CrowdCountingModelInterface {
    State getShowState();

    void setShowState(State showState);

    File getCrowdImageFile();

    void setCrowdImageFile(File crowdImageFile);

    File getWarningImageFile();

    void setWarningImageFile(File warningImageFile);

    String getPersonNumText();

    void setPersonNumText(String personNumText);

    List<CrowdShowObserver> getCrowdCrowdShowObservers();

    List<WarningShowObserver> getWarningShowObservers();

    PythonRunTask getPythonRunTask();

    void start();

    void stop();

    void end();

    void inputParam(String param);

    void registerCrowdShowObserver(CrowdShowObserver crowdShowObserver);

    void registerWarningShowObserver(WarningShowObserver observer);

    void registerPersonNumShowObserver(PersonNumShowObserver observer);
}
